#pragma once 

#include "Core\NervusSharedHeader.h"

namespace Nervus {
	namespace Core {
		class EngineCore {
		private:
			Window* mMainWnd;
			Render::NERVUS_RENDERSYSTEM mRenderSystem;
			i32 mUpdateFreq, mRenderFreq;
			bool mIsRunning;



			virtual void initEngine() = 0;
			virtual void updateEngine() = 0;
			virtual void renderEngine() = 0;
		protected:		//For game developer usage
			Render::RenderSystem* mRenderer;
			Input* mInput;
			Chrono* mChrono;

		public:
			EngineCore();
			~EngineCore();
			void setWindowParams(string, u32, u32, u32, u32);
			void setRendererParams(Render::NERVUS_RENDERSYSTEM, bool);

			void runEngine();


		};
	}
}